filmes = read_imported_data()
filmes_transform = filmes %>% 
    mutate(bilheteria_log_scaled = as.vector(scale(log10(bilheteria))),
           avaliacao_scaled = as.vector(scale(avaliacao)))
plot_clusgap = function(clusgap, title = "Gap Statistic calculation results") {
    require("ggplot2")
    gstab = data.frame(clusgap$Tab, k = 1:nrow(clusgap$Tab))
    p = ggplot(gstab, aes(k, gap)) + geom_line() + geom_point(size = 5)
    p = p + geom_errorbar(aes(ymax = gap + SE.sim, ymin = gap - SE.sim), width = .2)
    p = p + ggtitle(title)
    return(p)
}
gaps <- filmes_transform %>% 
    select(avaliacao_scaled, bilheteria_log_scaled) %>% 
    clusGap(FUN = kmeans, nstart = 20, K.max = 8, B = 200)
plot_clusgap(gaps)

n_clusters = 5
# O agrupamento de fato:
km = filmes_transform %>% 
    select(bilheteria_log_scaled, avaliacao_scaled) %>% 
    kmeans(centers = n_clusters, nstart = 20)

agrupado = km %>% 
    augment(filmes_transform)
telaQuenteCluster = agrupado %>% 
    filter(filme == "Interstellar")

preciososCluster = agrupado %>% 
    filter(filme == "Colossal")

haMelhoresCluster = agrupado %>% 
    filter(filme == "Bride Wars")

altaExpectativaCluster = agrupado %>% 
    filter(filme == "Rio 2")

passatempoBomCluster = agrupado %>% 
    filter(filme == "One Day")

grupos = agrupado %>% 
    add_column(grupo = NA) %>% 
    mutate(grupo = sub(telaQuenteCluster$.cluster, "Tela quente", .cluster)) %>% 
    mutate(grupo = sub(preciososCluster$.cluster, "Preciosos", grupo)) %>% 
    mutate(grupo = sub(haMelhoresCluster$.cluster, "Há melhores", grupo)) %>% 
    mutate(grupo = sub(altaExpectativaCluster$.cluster, "Alta expectativa", grupo)) %>% 
    mutate(grupo = sub(passatempoBomCluster$.cluster, "Passatempo bom", grupo))
x = grupos %>% 
    ggplot(aes(x=avaliacao, y=bilheteria)) +
    stat_chull(aes(fill= grupo, text = paste("<b>grupo</b>: ", grupo)), alpha= 0.2, geom="polygon") +
    geom_point(aes(color = grupo,
                   text = paste("<b>grupo</b>: ", grupo,
                                "<br><b>filme</b>: ", filme,
                                "<br><b>avaliação</b>: ", avaliacao,
                                "<br><b>bilheteria</b>: ", bilheteria))) +
    xlab("Avaliação") +
    ylab("Bilheteria") +
    scale_y_log10() +
    theme(legend.position = "none")
## Warning: Ignoring unknown aesthetics: text

## Warning: Ignoring unknown aesthetics: text
ggplotly(x, tooltip = "text")